package reflect;

import java.lang.reflect.Method;

/**
 * 获取Person类中的所有方法, 判断若方法被@AutoRunMethod标记则调用方法, 额否则提示
 */
public class Test3 {
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("reflect.Person");//获得Person类对象
        Object obj = cls.newInstance();//放射方法创建一个新对象
        Method[] methods = cls.getDeclaredMethods();//获取Class对象所包含的的所有方法
        for(Method method : methods){//遍历Class的所有方法
            boolean mark = method.isAnnotationPresent(AutoRunMethod.class);//判断方法上是否有AutoRunMethod注解
            if(mark){//被注解标记, 调用方法
                System.out.println("调用方法:"+method.getName()+"()");
                method.invoke(obj);
            }else {//提示没有被注解标记
                System.out.println(method.getName()+"()该方法没有被标记!");
            }
        }
    }
}














